package com.tech.util;

import java.io.File;
import java.io.IOException;
import java.util.logging.*;

/**
 * 日志处理工具类
 * <p>
 * 本来是打算使用顶级日志记录器负责把日志输出到日志文件中的，但是swingx包下的类也有日志输出，且会覆盖我输出的自定义日志，因此不再使用父级日志记录器，
 * 为每个类返回它们独有的日志记录器，并且日志记录都输出到同一文件中
 */
public class LogProcessUtil {
	public static FileHandler fileHandler;
	public static ConsoleHandler consoleHandler;

	static {
		try {
			consoleHandler = new ConsoleHandler(); //控制台输出
			File file = new File("/SBT/logs");
			if (!file.isDirectory()) file.mkdirs();
			fileHandler = new FileHandler("/SBT/logs/java%u.log",true); //文件输出

			SimpleFormatter formatter = new SimpleFormatter();
			consoleHandler.setFormatter(formatter);
			fileHandler.setFormatter(formatter);
			consoleHandler.setLevel(Level.ALL);
			fileHandler.setLevel(Level.ALL);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 自定义日志处理器
	 *
	 * @param className 包全名
	 * @return 日志记录器
	 */
	public static Logger getLogger(String className) {
		Logger logger = Logger.getLogger(className);
		logger.setUseParentHandlers(false);
		logger.addHandler(consoleHandler);
		logger.addHandler(fileHandler);
		logger.setLevel(Level.ALL);
		return logger;
	}
}
